package com.richpay.basejava.base15;

/**
 * 异常处理：
 * try{
 * //有可能发生异常的代码块
 * }catch(Exception e){
 * //一旦发生了异常就进入相应的catch块进行处理，处理完毕后程序继续向下运行。
 * }catch(Exception2 e){
 * //一旦发生了异常就进入相应的catch块进行处理，处理完毕后程序继续向下运行。
 * }
 * try后面可以跟很多的catch语句，但一旦进入其中任何一个catch块后就不会在进入其他catch块了。
 * 如果try后面跟了很多的catch语句，一定要注意：子类异常在前，父类异常在后。
 */
public class ExceptionDemo {
    public static void main(String[] args) {
        int num1 = 5;
        int num2 = 0;
        int result = 0;

        try {
            //result = num1 / num2;
            // System.out.println("result=" + result);
            int[] array = new int[2];
            array[2] = 100;
            // 一旦在try语句中出现了异常，
            // 则自动匹配抛出的异常类型的对象和catch块中的异常类型进行匹配，
            // 一旦匹配成功就会进入指定的catch语句块进行异常处理，处理完毕后，
            // 程序继续向下运行.
            // try后面可以跟很多的catch语句，但一旦进入其中任何一个catch块后就不会在进入其它catch块了.

        } catch (ArithmeticException e) {
            e.printStackTrace();//打印异常发生的轨迹。
            System.out.println("ArithmeticException=" + e.getMessage());
        } catch (ArrayIndexOutOfBoundsException e) {
            e.printStackTrace();//打印异常发生的轨迹。
            System.out.println("ArrayIndexOutOfBoundsException=" + e.getMessage()
            );
        } catch (Exception e) {
            e.printStackTrace();//打印异常发生的轨迹。
            System.out.println("Exception" + e.getMessage());
        }

        System.out.println("result=" + result);
    }
}
